home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Dr. Windows 3
/
dr win3.zip
/
dr win3
/
WINPROGS
/
WDASM17B.ZIP
/
HELLO1.ASM
< prev
next >
Wrap
Assembly Source File
|
1993-04-02
|
21KB
|
1,212 lines
TITLE WDASM Example Program
.286
.MODEL SMALL
INCLUDE HELLO2.INC
EXTRN DefWindowProc:FAR
EXTRN GetMessage:FAR
EXTRN TranslateMessage:FAR
EXTRN FatalExit:FAR
EXTRN DispatchMessage:FAR
EXTRN GetVersion:FAR
EXTRN GetDosEnvironment:FAR
EXTRN LocalAlloc:FAR
EXTRN LocalRealloc:FAR
EXTRN LocalFree:FAR
EXTRN FatalAppExit:FAR
EXTRN LocalSize:FAR
EXTRN UpdateWindow:FAR
EXTRN GlobalRealloc:FAR
EXTRN GlobalSize:FAR
EXTRN InitApp:FAR
EXTRN PostQuitMessage:FAR
EXTRN LockSegment:FAR
EXTRN UnlockSegment:FAR
EXTRN WaitEvent:FAR
EXTRN GetClientRect:FAR
EXTRN GetModuleFileName:FAR
EXTRN BeginPaint:FAR
EXTRN EndPaint:FAR
EXTRN CreateWindow:FAR
EXTRN ShowWindow:FAR
EXTRN LoadCursor:FAR
EXTRN LoadIcon:FAR
EXTRN RegisterClass:FAR
EXTRN InitTask:FAR
EXTRN GetStockObject:FAR
EXTRN DrawText:FAR
EXTRN Dos3Call:FAR
EXTRN __winflags:FAR
.CODE
Proc0000Seg1 PROC NEAR
ADD BYTE PTR [BX+SI], AL
ADD BYTE PTR [BX+SI], AL
ADD BYTE PTR [BX+SI], AL
ADD BYTE PTR [BX+SI], AL
ADD BYTE PTR [BX+SI], AL
ADD BYTE PTR [BX+SI], AL
ADD BYTE PTR [BX+SI], AL
ADD BYTE PTR [BX+SI], AL
Proc0000Seg1 ENDP
Proc0010Seg1 PROC NEAR
PUSH BP
MOV BP, SP
MOV AX, 002EH
CALL NEAR PTR Proc042ASeg1
CMP WORD PTR [BP+10], 0
JZ L0022H
JMP NEAR PTR L008AH
L0022H: MOV WORD PTR [BP-46], 0003H
MOV WORD PTR [BP-44], LROFFSET WNDPROC
MOV WORD PTR [BP-42], SEG WNDPROC
MOV WORD PTR [BP-40], 0000H
MOV WORD PTR [BP-38], 0000H
MOV AX, WORD PTR [BP+12]
MOV WORD PTR [BP-36], AX
PUSH 0
PUSH 0
PUSH 7F00H
CALL FAR PTR LoadIcon
MOV WORD PTR [BP-34], AX
PUSH 0
PUSH 0
PUSH 7F00H
CALL FAR PTR LoadCursor
MOV WORD PTR [BP-32], AX
PUSH 0
CALL FAR PTR GetStockObject
MOV WORD PTR [BP-30], AX
MOV WORD PTR [BP-28], 0000H
MOV WORD PTR [BP-26], 0000H
MOV AX, 0010H
MOV DX, DS
MOV WORD PTR [BP-24], AX
MOV WORD PTR [BP-22], DX
LEA AX, WORD PTR [BP-46]
MOV DX, SS
PUSH DX
PUSH AX
CALL FAR PTR RegisterClass
L008AH: MOV AX, 0010H
MOV DX, DS
PUSH DX
PUSH AX
MOV AX, 00C2H
MOV DX, DS
PUSH DX
PUSH AX
PUSH 00CFH
PUSH 0
PUSH 8000H
PUSH 8000H
PUSH 8000H
PUSH 8000H
PUSH 0
PUSH 0
PUSH WORD PTR [BP+12]
PUSH 0
PUSH 0
CALL FAR PTR CreateWindow
MOV WORD PTR [BP-2], AX
PUSH AX
PUSH WORD PTR [BP+4]
CALL FAR PTR ShowWindow
PUSH WORD PTR [BP-2]
CALL FAR PTR UpdateWindow
L00CDH: LEA AX, WORD PTR [BP-20]
MOV DX, SS
PUSH DX
PUSH AX
PUSH 0
PUSH 0
PUSH 0
CALL FAR PTR GetMessage
AND AX, AX
JZ L00FEH
LEA AX, WORD PTR [BP-20]
MOV DX, SS
PUSH DX
PUSH AX
CALL FAR PTR TranslateMessage
LEA AX, WORD PTR [BP-20]
MOV DX, SS
PUSH DX
PUSH AX
CALL FAR PTR DispatchMessage
JMP SHORT L00CDH
NOP
L00FEH: MOV AX, WORD PTR [BP-16]
LEAVE
RET 000AH
Proc0010Seg1 ENDP
Proc0105Seg1 PROC NEAR
NOP
Proc0105Seg1 ENDP
WNDPROC PROC FAR PUBLIC
PUSH DS
POP AX
NOP
INC BP
PUSH BP
MOV BP, SP
PUSH DS
MOV DS, AX
MOV AX, 002CH
CALL NEAR PTR Proc042ASeg1
PUSH SI
PUSH DI
MOV SI, WORD PTR [BP+14]
MOV AX, WORD PTR [BP+12]
JMP NEAR PTR L017AH
NOP
L0122H: PUSH SI
LEA AX, WORD PTR [BP-36]
MOV DX, SS
PUSH DX
PUSH AX
CALL FAR PTR BeginPaint
MOV DI, AX
PUSH SI
LEA AX, WORD PTR [BP-44]
MOV DX, SS
PUSH DX
PUSH AX
CALL FAR PTR GetClientRect
PUSH DI
MOV AX, 00DFH
MOV DX, DS
PUSH DX
PUSH AX
PUSH -1
LEA AX, WORD PTR [BP-44]
MOV DX, SS
PUSH DX
PUSH AX
PUSH 37
CALL FAR PTR DrawText
PUSH SI
LEA AX, WORD PTR [BP-36]
MOV DX, SS
PUSH DX
PUSH AX
CALL FAR PTR EndPaint
XOR AX, AX
XOR DX, DX
JMP SHORT L019FH
NOP
L016AH: PUSH 0
CALL FAR PTR PostQuitMessage
XOR AX, AX
XOR DX, DX
JMP SHORT L019FH
NOP
JMP SHORT L0187H
L017AH: CMP AX, 0002H
JZ L016AH
CMP AX, 000FH
JNZ L0187H
JMP NEAR PTR L0122H
L0187H: PUSH SI
PUSH WORD PTR [BP+12]
PUSH WORD PTR [BP+10]
PUSH WORD PTR [BP+8]
PUSH WORD PTR [BP+6]
CALL FAR PTR DefWindowProc
JMP SHORT L019FH
NOP
MOV WORD PTR [BP+14], SI
L019FH: POP DI
POP SI
SUB BP, 2
MOV SP, BP
POP DS
POP BP
DEC BP
RETF 000AH
WNDPROC ENDP
Proc01ACSeg1 PROC NEAR
L01ACH DW LROFFSET __winflags
L01AEH: MOV AL, -1
PUSH AX
CALL NEAR PTR Proc034ESeg1
L01B4H:: XOR BP, BP
PUSH BP
CALL FAR PTR InitTask
OR AX, AX
JZ L01AEH
MOV WORD PTR D0064H, ES
ADD CX, 0100H
JB L01AEH
MOV WORD PTR D002EH, CX
MOV WORD PTR D0030H, SI
MOV WORD PTR D0032H, DI
MOV WORD PTR D0034H, BX
MOV WORD PTR D0036H, ES
MOV WORD PTR D0038H, DX
CALL FAR PTR GetVersion
MOV WORD PTR D0066H, AX
MOV AH, 48
TEST WORD PTR CS:L01ACH, 0001H
JZ L01FCH
CALL FAR PTR Dos3Call
JMP SHORT L01FEH
L01FCH: INT 0021H
L01FEH: MOV WORD PTR D0068H, AX
TEST WORD PTR CS:L01ACH, 0001H
JNZ L020FH
MOV AL, 0
MOV BYTE PTR D006BH, AL
L020FH: XOR AX, AX
PUSH AX
CALL FAR PTR WaitEvent
PUSH WORD PTR D0032H
CALL FAR PTR InitApp
OR AX, AX
JZ L01AEH
CALL NEAR PTR Proc0268Seg1
CALL NEAR PTR Proc047ESeg1
CALL NEAR PTR Proc05FCSeg1
CALL NEAR PTR Proc085CSeg1
PUSH WORD PTR D00A0H
PUSH WORD PTR D009EH
PUSH WORD PTR D009CH
CALL NEAR PTR Proc024CSeg1
ADD SP, 6
PUSH AX
CALL NEAR PTR Proc0347Seg1
MOV AX, 0015H
JMP NEAR PTR L0683H
Proc01ACSeg1 ENDP
Proc024CSeg1 PROC NEAR
PUSH BP
MOV BP, SP
PUSH WORD PTR D0032H
PUSH WORD PTR D0030H
PUSH WORD PTR D0036H
PUSH WORD PTR D0034H
PUSH WORD PTR D0038H
CALL NEAR PTR Proc0010Seg1
POP BP
RET
Proc024CSeg1 ENDP
Proc0268Seg1 PROC NEAR
MOV AX, 3500H
TEST WORD PTR CS:L01ACH, 0001H
JZ L027BH
CALL FAR PTR Dos3Call
JMP SHORT L027DH
L027BH: INT 0021H
L027DH: MOV WORD PTR D0050H, BX
MOV WORD PTR D0052H, ES
PUSH CS
POP DS
MOV AX, 2500H
MOV DX, 067EH
TEST WORD PTR CS:L01ACH, 0001H
JZ L029DH
CALL FAR PTR Dos3Call
JMP SHORT L029FH
L029DH: INT 0021H
L029FH: PUSH SS
POP DS
MOV CX, WORD PTR D00B8H
JCXZ L02D0H
MOV ES, WORD PTR D0064H
MOV SI, WORD PTR ES:D002CH
MOV AX, WORD PTR D00BAH
MOV DX, WORD PTR D00BCH
XOR BX, BX
CALL DWORD PTR D00B6H
JAE L02C2H
JMP NEAR PTR L0424H
L02C2H: MOV AX, WORD PTR D00BEH
MOV DX, WORD PTR D00C0H
MOV BX, 0003H
CALL DWORD PTR D00B6H
L02D0H: MOV ES, WORD PTR D0064H
MOV CX, WORD PTR ES:D002CH
JCXZ L0319H
MOV ES, CX
XOR DI, DI
L02DFH: CMP BYTE PTR ES:[DI], 0
JZ L0319H
MOV CX, 000DH
MOV SI, 0042H
REPE CMPSB
JZ L02FAH
MOV CX, 7FFFH
XOR AX, AX
REPNE SCASB
JNZ L0319H
JMP SHORT L02DFH
L02FAH: PUSH ES
PUSH DS
POP ES
POP DS
MOV SI, DI
MOV DI, 0074H
MOV CL, 4
L0305H: LODSB
SUB AL, 65
JB L0317H
SHL AL, CL
XCHG DX, AX
LODSB
SUB AL, 65
JB L0317H
OR AL, DL
STOSB
JMP SHORT L0305H
L0317H: PUSH SS
POP DS
L0319H: MOV SI, 00C2H
MOV DI, 00C2H
CALL NEAR PTR Proc03EBSeg1
MOV SI, 00C2H
MOV DI, 00C2H
CALL NEAR PTR Proc03FASeg1
MOV SI, 00C2H
MOV DI, 00C2H
CALL NEAR PTR Proc03EBSeg1
MOV SI, 00C2H
MOV DI, 00C2H
CALL NEAR PTR Proc03EBSeg1
MOV SI, 00C2H
MOV DI, 00C2H
CALL NEAR PTR Proc03FASeg1
RET
Proc0268Seg1 ENDP
Proc0347Seg1 PROC NEAR
PUSH BP
MOV BP, SP
XOR CX, CX
JMP SHORT L0368H
Proc0347Seg1 ENDP
Proc034ESeg1 PROC NEAR
PUSH BP
MOV BP, SP
MOV CX, 0001H
JMP SHORT L0368H
PUSH BP
MOV BP, SP
PUSH SI
PUSH DI
MOV CX, 0100H
JMP SHORT L0368H
PUSH BP
MOV BP, SP
PUSH SI
PUSH DI
MOV CX, 0101H
L0368H:: MOV BYTE PTR D00A9H, CH
PUSH CX
OR CL, CL
JNZ L038DH
MOV SI, 024CH
MOV DI, 024CH
CALL NEAR PTR Proc03EBSeg1
MOV SI, 00C2H
MOV DI, 00C2H
CALL NEAR PTR Proc03EBSeg1
MOV SI, WORD PTR [BP+4]
PUSH SI
CALL NEAR PTR Proc085CSeg1
ADD SP, 2
L038DH: MOV SI, 00C2H
MOV DI, 00